home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vestd.h < prev    next >
C/C++ Source or Header  |  1999-03-06  |  20KB  |  473 lines

  1. /*  VEstd.h
  2.  
  3.   vector management functions:
  4.   manipulations on whole arrays or vectors of data type "extended"
  5.   (real numbers: long double)
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VESTD_H
  12. #define __VESTD_H
  13. #if !defined( __VECLIB_H )
  14. #include <VecLib.h>
  15. #endif
  16.  
  17.  
  18. #ifdef __BORLANDC__   /* 80-bit IEEE numbers supported:
  19.                          the following 250 lines apply
  20.                          only to Borland C++  */
  21.  
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25.  
  26. /*************************  Generation  **************************/
  27.  
  28. eVector   __vf  VE_vector( ui size );
  29. eVector   __vf  VE_vector0( ui size );
  30.  
  31. /***************  Addressing single vector elements ******************/
  32.  
  33. extended _VFAR * VE_Pelement( eVector X, ui n );
  34.       /* returns a pointer to the n'th element of X. For the memory model
  35.          HUGE, the pointer is normalized. */
  36. #define VE_element( X, n )  (*VE_Pelement( X, n ))
  37.  
  38. /*******************  Initialization **********************************/
  39.  
  40. void  __vf  VE_equ0( eVector X, ui size );
  41. void  __vf  VE_equ1( eVector X, ui size );
  42. void  __vf  VE_equC( eVector X, ui size, extended C );
  43. void  __vf  VE_equV( eVector Y, eVector X, ui size );
  44. void  __vf  VEx_equV( eVector Y, eVector X, ui size,
  45.                                        extended A, extended B );
  46. void  __vf  VE_ramp( eVector X, ui size,
  47.                                     extended Start, extended Rise );
  48. void  __vf  VE_Parzen( eVector X, ui size );
  49. void  __vf  VE_Welch( eVector X, ui size );
  50. void  __vf  VE_Hanning( eVector X, ui size );
  51. void  __vf  VE_comb( eVector X, ui size, unsigned step, extended C );
  52. long  __vf  VE_random( eVector X, ui size, long seed,
  53.                        extended MinVal, extended MaxVal );
  54. long  __vf  VE_noise( eVector X, ui size, long seed, extended Amp );
  55.             /* VE_random and VE_noise return a new seed value.
  56.                random quality of VE_random is much better      */
  57.  
  58. /***************  Data-type interconversions  *************************/
  59.        /* for rounding functions, see VEmath.h ! */
  60.  
  61. void  __vf   V_SItoE(  eVector Y, siVector X, ui size );
  62. void  __vf   V_ItoE(   eVector Y, iVector  X, ui size );
  63. void  __vf   V_LItoE(  eVector Y, liVector X, ui size );
  64. void  __vf   V_QItoE(  eVector Y, qiVector X, ui size );
  65.  
  66. void  __vf   V_UStoE(  eVector Y, usVector X, ui size );
  67. void  __vf   V_UtoE(   eVector Y, uVector  X, ui size );
  68. void  __vf   V_ULtoE(  eVector Y, ulVector X, ui size );
  69.  
  70. void  __vf   V_FtoE( eVector Y, fVector X, ui size );
  71. void  __vf   V_EtoF( fVector Y, eVector X, ui size );
  72. void  __vf   V_DtoE( eVector Y, dVector X, ui size );
  73. void  __vf   V_EtoD( dVector Y, eVector X, ui size );
  74.  
  75.  
  76. /****************  Index-oriented manipulations ***********************/
  77.  
  78.  
  79. void  __vf  VE_reflect( eVector X, ui size );
  80. void  __vf  VE_rev( eVector Y, eVector X, ui size );
  81. #if defined (V_HUGE)
  82.     void  __vf  VE_rotate( eVector Y, eVector X, ui size, long pos );
  83. #else
  84.     void  __vf  VE_rotate( eVector Y, eVector X, ui size, int pos );
  85. #endif
  86. void  __vf  VE_delete( eVector X, ui size, ui pos );
  87. void  __vf  VE_insert( eVector X, ui size, ui pos, extended C );
  88. void  __vf  VE_sort( eVector Y, eVector X, ui size, int dir );
  89. void  __vf  VE_sortind( uiVector Ind, eVector X, ui size, int dir );
  90. void  __vf  VE_subvector( eVector Y, ui sizey, eVector X, int step );
  91. void  __vf  VE_indpick( eVector Y, uiVector Ind, ui sizey, eVector X );
  92. void  __vf  VE_indput(  eVector Y, eVector X, uiVector Ind, ui sizex );
  93. void  __vf  VE_indpick( eVector Y, uiVector Ind, ui size, eVector X );
  94. ui    __vf  VE_searchC( eVector X, ui size, extended C, int mode );
  95. void  __vf  VE_searchV( uiVector Ind, eVector X, ui sizex,
  96.                                      eVector Tab, ui sizetab, int mode );
  97.  
  98. void  __vf  VE_polyinterpol( eVector Y, eVector X, ui sizex,
  99.                    eVector XTab, eVector YTab, ui sizetab, unsigned deg );
  100. void  __vf  VE_ratinterpol( eVector Y, eVector X, ui sizex,
  101.                    eVector XTab, eVector YTab, ui sizetab, unsigned deg );
  102. void  __vf  VE_splinederiv2( eVector Y2, eVector XTab, eVector YTab,
  103.                    ui size, int specify, extended Yp0, extended Ypn );
  104. void  __vf  VE_splineinterpol( eVector Y, eVector X, ui sizex,
  105.                    eVector XTab, eVector YTab, eVector Y2Tab, ui sizetab );
  106.  
  107.  
  108. /***************** Functions of a sub-set of elements  ********************/
  109.  
  110. void  __vf  VE_subvector_equC(  eVector Y, ui subsiz, unsigned samp, extended C );
  111. void  __vf  VE_subvector_equV(  eVector Y, ui subsiz, unsigned samp, eVector X );
  112.     /*   for arithmetic functions of subsets, see <VEmath.h>  */
  113.  
  114.  
  115. /**************** One-Dimensional Vector Operations ***********************/
  116.  
  117. extended      __vf  VE_max( eVector X, ui size );
  118. extended      __vf  VE_min( eVector X, ui size );
  119. extended      __vf  VE_absmax( eVector X, ui size );
  120. extended      __vf  VE_absmin( eVector X, ui size );
  121. int           __vf  VE_maxexp( eVector X, ui size );
  122. int           __vf  VE_minexp( eVector X, ui size );
  123. extended      __vf  VE_maxind( ui _VFAR *Ind, eVector X, ui size );
  124. extended      __vf  VE_minind( ui _VFAR *Ind, eVector X, ui size );
  125. extended      __vf  VE_absmaxind( ui _VFAR *Ind, eVector X, ui size );
  126. extended      __vf  VE_absminind( ui _VFAR *Ind, eVector X, ui size );
  127. ui            __vf  VE_localmaxima( uiVector Ind, eVector X, ui size );
  128. ui            __vf  VE_localminima( uiVector Ind, eVector X, ui size );
  129. void          __vf  VE_runmax( eVector Y, eVector X, ui size );
  130. void          __vf  VE_runmin( eVector Y, eVector X, ui size );
  131. extended      __vf  VE_sum( eVector X, ui size );
  132. extended      __vf  VE_prod( eVector X, ui size );
  133. void          __vf  VE_runsum( eVector Y, eVector X, ui size );
  134. void          __vf  VE_runprod( eVector Y, eVector X, ui size );
  135. int           __vf  VE_iselementC( eVector Tab, ui size, extended C );
  136. ui            __vf  VE_iselementV( eVector Y, eVector X, ui sizex,
  137.                                    eVector Tab, ui sizetab );
  138.  
  139. /**************** Statistical Functions and Building Blocks *************/
  140.  
  141. extended __vf  VE_sumabs( eVector X, ui size );
  142. extended __vf  VE_mean( eVector X, ui size );
  143. extended __vf  VE_meanwW( eVector X, eVector Wt, ui size );
  144. extended __vf  VE_meanabs( eVector X, ui size );
  145. extended __vf  VE_selected_mean( ui _VFAR *nsel, eVector X, ui size,
  146.                 extended XMin, extended XMax ); /* takes only x with Min<=x<=Max */
  147. extended __vf  VE_median( eVector X, ui size );
  148. extended __vf  VE_sumdevC( eVector X, ui size, extended C );
  149. extended __vf  VE_sumdevV( eVector X, eVector Y, ui size );
  150. extended __vf  VE_avdevC( eVector X, ui size, extended C );
  151. extended __vf  VE_avdevV( eVector X, eVector Y, ui size );
  152. extended __vf  VE_ssq( eVector X, ui size );
  153. extended __vf  VE_rms( eVector X, ui size );
  154. extended __vf  VE_ssqdevC( eVector X, ui size, extended C );
  155. extended __vf  VE_ssqdevV( eVector X, eVector Y, ui size );
  156. extended __vf  VE_meanvar(  extended _VFAR *Var, eVector X, ui size );
  157. extended __vf  VE_meanvarwW(  extended _VFAR *Var, eVector X, eVector Wt, ui size );
  158. extended __vf  VE_varianceC( eVector X, ui size, extended C );
  159. extended __vf  VE_varianceV( eVector X, eVector Y, ui size );
  160. extended __vf  VE_varianceCwW( eVector X, eVector Wt, ui size, extended C );
  161. extended __vf  VE_varianceVwW( eVector X, eVector Y, eVector Wt, ui size );
  162. extended __vf  VE_chi2( eVector X, eVector Y, eVector InvVar, ui size );
  163. extended __vf  VE_chiabs( eVector X, eVector Y, eVector Wt, ui size );
  164. extended __vf  VE_corrcoeff( eVector X, eVector Y, ui size,
  165.                              extended Xmean, extended Ymean );
  166. ui    __vf  VE_distribution( uiVector Abund, eVector Limits, ui nbins,
  167.                              eVector X, ui sizex, int mode );
  168.  
  169. void  __vf  VE_linregress( eVector Param, eVector X, eVector Y, ui size );
  170. void  __vf  VE_linregresswW( eVector Param, eVector X, eVector Y,
  171.                              eVector InvVar, ui size );
  172.      /* more (linear and nonlinear) d